A storage system includes multiple storage devices or disks coupled with interconnecting hardware and control hardware. The control hardware may be referred to as a storage server, which is a special-purpose processing device used to store and retrieve data on behalf of clients of the storage system. The storage server includes a filesystem and/or comparable management resources that manage the data storage of the disks in the storage system.
The data storage area of the disks is often divided into data blocks, which are managed by the filesystem. The filesystem determines how and where data will be stored and retrieved. The disks can be organized into one or more groupings (physical and/or logical) of redundant arrays of inexpensive/independent disks/drives (RAID). The data may be organized, managed, and accessed as data files, and/or as data blocks that include more or less information than a file. Hence, the storage server may be a file server that provides clients with file-level access to data, and/or a storage server that provides clients with block-level access to stored data.
Storage servers are traditionally either write-anywhere or write-in-place. A write-in-place approach writes a data block to the same physical location on disk when the data block is modified. In contrast, a write-out-of-place approach writes a modified data block to a new physical location on disk. A write-out-of-place filesystem stores data in unallocated blocks instead of writing over already allocated data blocks. Thus, data is not overwritten, and a particular storage space is traditionally not used for a subsequent write that changes data stored at the particular storage space. Write-anywhere may be used in conjunction with write-out-of-place. A filesystem having a write-anywhere property can write to any unallocated block on any available disk in a group, and does not have to write to a particular physical location for a particular “file” or block of data. An example of a filesystem using write-anywhere in conjunction with write-out-of-place is the Write-anywhere File Layout (WAFL®) filesystem included in Filer products made by Network Appliance, Inc. of Sunnyvale, Calif.
A write-anywhere filesystem generally allows for fast data writes and point in time filesystem copies. Additionally, a write-anywhere filesystem generally enables relatively fast recovery from system failures. However, under certain work loads (e.g., random overwrite of large files such as database tables), the behavior of a write-anywhere filesystem can degrade read and write performance of the storage system. When a storage system is initialized, the disks include large amounts of contiguous free space, and large files (e.g., databases, logical unit numbers (LUNs), databases on LUNs) are initially stored in sequential physical storage space. As the file is modified over time, the write-anywhere filesystem writes the modified data to new locations, leaving space in the physical layout of the file. As the file ages, its blocks are spread across one or more disks in the storage system, which degrades sequential read performance as seek times rise. Write speed is also negatively affected as disk heads seek over fragmented disk free space. The benefits of the write-anywhere filesystem with respect to smaller files may be at least partially offset by the costs associated with its performance on large files.